package com.bosssoft.hr.train.j2se.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * @Class BaseEntity
 * @Description 公共类 用来存储公共部分，减少代码重复量，
 * 实现Serializable接口的类可以被序列化和反序列化，这意味着它们可以被存储在文件中或通过网络传输。
 * 用 lombok注解 设置了 有参构造、无参构造 @getter @setter  @ToString @HashAndEqual 等
 * 这个类只需要被继承，所以设置为抽象类
 * @Author TangZaoBang
 * @Date 2023/04/26 13:39
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public abstract class BaseEntity implements Serializable {
    /**
     * 主键 bigint类型一般与Long对应
     */
    protected Long id;
    /**
     * 租户id
     */
    private Long tenantId;
    /**
     * 组织机构id 一个租户多个机构
     */
    private Long orgId;
    /**
     * 公司ID 一个机构多个公司
     */
    private Long companyId;
    /**
     * 创建人id 这个id都是指出 primary key的值
     */
    private Long createdBy;
    /**
     * 姓名 容易这个是避免通过id去关联查询
     */
    private String creator;
    /**
     * 记录插入的记录时间 用于追踪记录
     */
    private Date createdTime;
    /**
     * 修改记录的时候被更新
     */
    private Long updatedBy;
    /**
     * 记录更新的记录时间 用于追踪记录更新时间以及 确定是否最新的排在前面
     */
    private Date updatedTime;
    /**
     * 修改人
     */
    private String modifier;
    /**
     * 记录状态 正常为 1 注销为 0
     */
    private byte status;
    /**
     *  标记记录的版本好 每次加1
     */
    private Long version;
}
